// SOP任务表
import { getURL, $http } from './api.js';
import { createDocument, getCurrentDate, stringToDate, deleteDocumentByCondition } from '../index.js';

(function() {
  /**
   * 获取增量事件列表
  */
  var hasUpdateList = [];
  getEventList(1);
  function getEventList(page) {
    var uri = getURL('/scrm/event/get-list');
    var startTime = Math.floor(getCurrentDate().getTime() / 1000);
    var endTime = Math.floor((getCurrentDate().getTime() - 864e5) / 1000);
    var params = {};
    var headers = {
      'Content-Type': 'application/json;charset=UTF-8'
    }
    var bodyParams = {
      start_time: startTime,
      end_time: endTime,
      event: 'sop',
      page,
      page_size: 500
    }
    var res = $http.post({
      uri,
      params,
      headers,
      data: bodyParams
    })
    // 如果请求失败，进行重试
    if (res.code == 40000) {
      getEventList(page);
      return;
    }
    if (res.status != 'ok') {
      return;
    }
    var data = res.data;
    var list = data.data;
    // 如果有下一页，继续获取
    if (data.last_page > data.current_page) {
      getEventList(++page);
    }
    for (var i = 0; i < list.length; i++) {
      var item = list[i];
      var pid = item.param.plain_id;
      // 如果未同步的，把id记录，已记录的不做重复同步
      if (hasUpdateList.indexOf(pid) < 0) {
        getSopPlanDetail(pid);
        hasUpdateList.push(pid);
      }
    }
  }

  // 获取SOP计划详情，入库SOP任务与计划关系表
  function getSopPlanDetail(plainId) {
    var formName = 'sop任务与计划关系表';
    // 先删除当前计划编号的数据，然后再重新同步
    deleteDocumentByCondition({
      formName,
      conditions: {
        '计划编号': plainId
      }
    })
    var uri = getURL('/scrm/sop-operation/sop-detail');
    var params = {
      plain_id: plainId
    }
    var res = $http.get({
      uri,
      params
    })
    // 如果请求失败，进行重试
    if (res.code == 40000) {
      getSopPlanDetail(plainId);
      return;
    }
    if (res.status != 'ok') {
      return;
    }
    var data = res.data;
    // 导入SOP任务与计划关系表
    for (var i = 0; i < data.task_list.length; i++) {
      var item = data.task_list[i];
      var timeStr = (item.run_date.slice(0, 4) + '-' + item.run_date.slice(4, 6) + '-' + item.run_date.slice(6, 8));
      createDocument({
        formName,
        formData: {
          '计划编号': plainId,
          '任务编号': item.task_id,
          '排期编号': item.date_id,
          '执行日期': stringToDate(timeStr, 'yyyy-MM-dd').getTime(),
          '循环类型': (+item.regular_type + 1).toString(),
          '执行时间': item.run_time * 1000
        }
      })
      // 查询员工任务详情
      getSopTaskDetail(data.user_id, item.date_id);
      // 查询员工任务详情
      getSopPlanRunDetail(data);
    }
  }

  // 查询员工任务详情，入库SOP任务表
  function getSopTaskDetail(userId, dateId) {
    var formName = 'sop任务表';
    // 先删除当前员工id和排期编号的数据，然后再重新同步
    deleteDocumentByCondition({
      formName,
      conditions: {
        '员工userid': userId,
        '排期编号': dateId
      }
    })
    var uri = getURL('/scrm/sop-operation/task-detail');
    var params = {
      user_id: userId,
      date_id: dateId
    }
    var res = $http.get({
      uri,
      params
    })
    // 如果请求失败，进行重试
    if (res.code == 40000) {
      getSopTaskDetail(userId, dateId);
      return;
    }
    if (res.status != 'ok') {
      return
    }
    var item = res.data;
    // 导入SOP任务与计划关系表
    createDocument({
      formName,
      formData: {
        '员工userid': userId,
        '任务id': item.task_id,
        '任务名称': item.task_name,
        '任务类型': item.task_type_sub,
        '群发类型': item.task_type_send,
        '任务内容': item.detail.text.content,
        '排期编号': dateId,
        '发送时间': item.run_time * 1000,
        '是否完成': (item.is_finish + 1).toString()
      }
    })
  }

  // 查询计划执行情况，入库SOP计划执行表
  function getSopPlanRunDetail(planDetail, page = 1) {
    var uri = getURL('/scrm/sop-operation/sop-staff-run');
    var params = {
      page,
      plain_id: planDetail.plain_id
    }
    var res = $http.get({
      uri,
      params
    })
    var data = res.data;
    var list = data.data;
    // 如果请求失败，进行重试
    if (res.code == 40000) {
      getSopPlanRunDetail(planDetail, page);
      return;
    }
    if (res.status != 'ok') {
      return
    }
    // 如果有下一页，继续获取
    if (data.last_page > data.current_page) {
      getSopPlanRunDetail(planDetail, ++page);
    }
    for (var i = 0; i < list.length; i++) {
      var item = list[i];
      createDocument({
        formName: 'sop计划执行表',
        formData: {
          '计划编号': planDetail.plain_id,
          '计划名称': planDetail.plain_name,
          '计划开始日期': planDetail.start_time * 1000,
          '计划结束日期': planDetail.end_time * 1000,
          '删除': (+planDetail.is_delete + 1).toString(),
          '创建员工userid': item.user_id,
          '修改时间': planDetail.update_time * 1000,
          '创建时间': planDetail.create_time * 1000,
          '创建人': item.real_name,
          '完成数': item.yes,
          '未完成数': item.no,
          '任务总数': item.total
        }
      })
    }
  }
})()
